# 274. H 指数
# 给你一个整数数组 citations ，其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。
# 根据维基百科上 h 指数的定义：h 代表“高引用次数” ，一名科研人员的 h 指数 是指他（她）至少发表了 h 篇论文，
# 并且 至少 有 h 篇论文被引用次数大于等于 h 。如果 h 有多种可能的值，h 指数 是其中最大的那个。
from typing import List


def hIndex(citations: List[int]) -> int:
    citations_len = len(citations)
    # 使用排序的方式
    citations_sorted = sorted(citations, reverse=True)

    # 排序后的数组
    h = 0
    start_index = 0

    while start_index < citations_len and citations_sorted[start_index] > h:
        h += 1
        start_index += 1
    return h


citations_1 = [3, 0, 6, 1, 5]
result = hIndex(citations_1)
print(result)

citations_2 = [1, 3, 1]
result = hIndex(citations_2)
print(result)

citations_3 = [0]
result = hIndex(citations_3)
print(result)

citations_4 = [100]
result = hIndex(citations_4)
print(result)

citations_5 = [100, 100]
result = hIndex(citations_5)
print(result)
